const fs = require('fs');
const path = require('path');

const mysql = require('mysql');

const db = mysql.createConnection({
    host: '127.0.0.1', // 数据库的IP地址
    user: 'root', // 数据库的用户名
    password: 'admin123', // 数据库的密码
    database: 'my_schema' // 数据库名称
});
db.connect((err) => {
    if (err) {
        console.log('数据库连接失败：', err);
    } else {
        console.log('数据库连接成功！');
    }
});
// const db = mysql.createPool({
//     host: '127.0.0.1', // 数据库的IP地址
//     user: 'root', // 数据库的用户名
//     password: 'admin123', // 数据库的密码
//     database: 'my_schema' // 数据库名称
// });
db.query('select * from users', (err, data) => {
    console.log('获取到的数据：', data);
    // if (data) {
    //     fs.writeFileSync(path.resolve(__dirname, 'data/users.json'), JSON.stringify(data));
    // }
});
db.query('select count(*) as total from users',(err,data)=>{
    console.log('获取到的数据：',data[0]['total'])
})

/**
 * 向users表中插入数据
 * 待执行的sql语句， 其中?是占位符
 * db.query语法：db.query(sql语句, [参数1, 参数2, 参数3, ...], 回调函数), 使用数组的形式传递参数
 */
const user = {
    username: 'js_add1',
    password: '123456',
    status: 1,
    id: 10
}
const sqlStr = 'insert into users (username,password,status,id) values (?,?,?,?)';
db.query(sqlStr, [user.username, user.password, user.status, user.id], (err, data) => {
    if(err) return console.log('插入数据1失败：', err);
    if (data.afterInsertId) {
        console.log('插入数据1成功：', data);
    }
});

/**
 * 插入数据的便捷方式： 向表中新增数据时，如果数据对象的每个属性和表中的字段一一对应，可以使用以下方式
 * db.query('insert into 表名 set ?', 数据对象, 回调函数)
 */

const user2 = {
    username: 'js_add2',
    password: '123456',
    status: 1,
    id: 11
}
const sqlStr2 = 'insert into users set ?';

db.query(sqlStr2,user2,(err,data)=>{
    if(err) return console.log('插入数据2失败：', err);
    if (data.afterInsertId) {
        console.log('插入数据2成功：', data);
    }
})

db.end(); // 关闭数据库连接